# 爬取酒店网站某酒店的评论数据；
# 酒店网站任选其一：携程、美团、去哪儿、同程旅行、飞猪旅行、艺龙旅行；
# 分析页面，结合正则化，爬取评论数据，保存为csv文件，字段不限，数据量不少于1w条

# 步骤如下:
# 目标爬取去哪儿的酒店的评论数据--链接地址:https://hotel.qunar.com/
# 1.加载URL
# 2.查看api地址的调用规律
# 3.初始化好selenium
# 4.通过selenium点击和搜索从网页源代码中分析出帖子的信息
# 5.导入J.csv文件

import time
import csv
from selenium.webdriver import Edge

# 初始化一下selenium
options = {
    "browserName": "MicrosoftEdge",
    "version": "",
    "platform": "WINDOWS",
    "ms:edgeOptions": {
        "extensions": [], "args": ["--disable-blink-features=AutomationControlled"]  # 添加最大化窗口运作参数
    }
}

web = Edge(capabilities=options)
web.get("https://hotel.qunar.com/cn/guangzhou/dt-1992/?fromDate=2024-04-07&toDate=2024-04-08&hotelSource=5401")
time.sleep(3)

# 登录
el = web.find_element_by_xpath('//*[@id="QunarPopBoxcelogin"]')
el.click()
time.sleep(1)
# 账号登录
el = web.find_element_by_xpath('//*[@id="QunarPopBox"]/div/div[3]/div[2]/form/div[2]/div/input').send_keys(
    "19712604216")
time.sleep(30)


def get_comments():
    for j in range(937):
        names = web.find_elements_by_xpath('//*[@class="nickname"]')
        texts = web.find_elements_by_xpath('//*[@class="js_contentAll"]')
        for i in range(10):
            csvwriter.writerow([names[i].text, texts[i].text])
        # 执行向下滚动鼠标滚轮的操作
        web.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        # 前往下一页
        ele = web.find_element_by_xpath(
            '/html/body/div[3]/div/section[2]/section/section[2]/aside[1]/aside[3]/div/div/div/div['
            '4]/div/div/div/div[3]/span')
        ele.click()
        time.sleep(2)


if __name__ == '__main__':
    # 计时
    t1 = time.time()
    # 初始化帖子数据文件
    f = open("bak/J.csv", mode="w", encoding="utf-8")
    csvwriter = csv.writer(f)
    csvwriter.writerow(["用户名称", "用户评价"])
    # 执行爬取
    get_comments()

    t2 = time.time()
    f.close()
    print("over!")
    print(f"花费时间为:{t2 - t1:.2f}秒")
